#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long ll;
const ll N=205000;
const ll MOD=1e9+7;
//dp[i][j]表示第i轮分差为j的方案数
ll dp[110][N];
ll sum[N];
ll a,b,k,t;
int main(void){
    scanf("%lld%lld%lld%lld",&a,&b,&k,&t);
    dp[0][0]=1;
    for(int i=1;i<=t;i++){
        for(int j=0;j<N;j++){
            sum[j]=((j?sum[j-1]:0)+dp[i-1][j])%MOD;
        }
        for(int j=0;j<N;j++){
            dp[i][j]=(sum[j]-(j-2*k-1>+0 ? sum[j-2*k-1]:0)+MOD)%MOD;
        }
    }
    ll ans=0;
    for(int i=0;i<N;i++){
        sum[i]=((i?sum[i-1]:0)+dp[t][i])%MOD;
    }
    for(int i=0;i<=2*k*t;i++){
        ans=(ans+dp[t][i]*(i+a-b-1>=0?sum[i+a-b-1]:0)%MOD)%MOD;
    }
    printf("%lld\n",ans);
    return 0;
}